package cn.funeralobjects.upms.repository;

import cn.funeralobjects.common.repository.EnableRepository;
import cn.funeralobjects.common.repository.EntityRepository;
import cn.funeralobjects.upms.entity.EApi;
import cn.funeralobjects.upms.enums.HttpMethod;
import cn.funeralobjects.upms.enums.Protocol;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import java.util.Optional;

/**
 * API实体的数据接口
 *
 * @author FuneralObjects
 * Create date: 2020/4/26 11:27 AM
 */
public interface ApiRepository extends EntityRepository<EApi, Integer>, EnableRepository<EApi, Integer> {

    /**
     * 判断是否存在符合条件的api
     *
     * @param scope    范围
     * @param protocol 协议
     * @param method   方法
     * @param url      路径
     * @return true - 存在
     */
    boolean existsAllByScopeAndProtocolAndMethodAndUrl(String scope, Protocol protocol, HttpMethod method, String url);

    /**
     * 查询符合条件的api
     *
     * @param scope    范围
     * @param protocol 协议
     * @param method   方法
     * @param url      对象
     * @return api对象
     */
    Optional<EApi> findAllByScopeAndProtocolAndMethodAndUrl(String scope, Protocol protocol, HttpMethod method, String url);

    /**
     * 更新名称
     *
     * @param name 名称
     * @param id   主键id
     */
    @Modifying
    @Query("UPDATE EApi SET name = :name WHERE id = :id")
    void updateNameById(String name, Integer id);
}
